package cm.tl.pms.entity;

import cm.tl.pms.common.annotation.Excel;
import cm.tl.pms.common.entity.BaseEntity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 实施管理对象 biz_impl_mgr
 *
 * @author ruoyi
 * @date 2025-04-09
 */
@Data
@TableName("biz_impl_mgr")
public class ImplMgr extends BaseEntity {

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 项目编号
     */
    @Excel(name = "项目编号")
    private Long projectId;

    /**
     * 项目名称
     */
    @Excel(name = "项目名称")
    private String projectName;

    /**
     * 项目类型
     */
    @Excel(name = "项目类型")
    private Long projectType;

    /**
     * 项目阶段
     */
    @Excel(name = "项目阶段")
    private String projectPhase;

    /**
     * 云资源占用
     */
    @Excel(name = "云资源占用")
    private String cloudResourceUsage;

    /**
     * 目录上链情况
     */
    @Excel(name = "目录上链情况")
    private Long catalogChainStatus;

    /**
     * 初验时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "初验时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date startAcceptanceTime;

    /**
     * 终验时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "终验时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endAcceptanceTime;

    /**
     * 阶段工期
     */
    @Excel(name = "阶段工期")
    private Long phaseDuration;

    /**
     * 项目状态
     */
    @Excel(name = "项目状态")
    private Long projectStatus;

    /**
     * 监理报告
     */
    @Excel(name = "监理报告")
    private Long superviseReport;

    /**
     * 月度报告
     */
    @Excel(name = "月度报告")
    private Long monthReport;

    /**
     * 其他附件
     */
    @Excel(name = "其他附件")
    private Long otherAttachment;

    /**
     * 申报部门
     */
    @Excel(name = "申报部门")
    private String reportDepartment;

    /**
     * 项目开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "项目开始时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date projectStartTime;

    /**
     * 乙方公司
     */
    @Excel(name = "乙方公司")
    private String secondCompany;

    /**
     * 项目负责人
     */
    @Excel(name = "项目负责人")
    private String responsiblePerson;

    /**
     * 联系电话
     */
    @Excel(name = "联系电话")
    private String phone;

    /**
     * 合同金额
     */
    @Excel(name = "合同金额")
    private BigDecimal contractAmount;

    /**
     * 签订时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "签订时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date signDate;

    /**
     * 合同有效期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "合同有效期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date contractDuration;

    /**
     * 变更申请
     */
    @Excel(name = "变更申请")
    private Long changeRequestStatus;

    /**
     * 预计验收日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "预计验收日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date estimateAcceptanceDate;

    /**
     * 阶段负责人
     */
    @Excel(name = "阶段负责人")
    private String phaseResponsiblePerson;

    /**
     * 督办意见
     */
    @Excel(name = "督办意见")
    private String superviseComment;

    /**
     * 审核状态
     */
    @Excel(name = "审核状态")
    private Long approvalStatus;

    /**
     * 审批日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @Excel(name = "审批日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date approvalDate;

    /**
     * 审批人
     */
    @Excel(name = "审批人")
    private String approver;

    /**
     * 审核意见
     */
    @Excel(name = "审核意见")
    private String approvalComment;

    /**
     * 父类id
     */
    @Excel(name = "父类id")
    private Long parentId;

    /**
     * 单位id
     */
    @Excel(name = "单位id")
    private Long deptId;

}
